import 'dart:io';

import 'package:m_todo/presentation/todo_view_model.dart';

void main(List<String> args) async {
  stdin.echoMode = false;

  var todoView = TodoViewModel((text) {
    print(text);
  }, () => stdin.readLineSync());
  await todoView.init();

  if (args.isNotEmpty) {
    // 添加一个todo
    if (args[0] == 'add') {
      args[0] = '';
      var content = _sp(args);
      todoView.add(content);
      return;
    }

    // 完成一个todo
    if (args[0] == 'done') {
      if (args.length >= 2) {
        var index = int.tryParse(args[1]);
        if (index != null) {
          todoView.done(index);
        } else {
          // 参数格式不正确
          print('参数格式不正确');
        }
      } else {
        // 参数不全
        print('参数不全');
      }
      return;
    }

    // 列出所有todo
    if (args[0] == 'list') {
      // 查询所有
      if (args.length >= 2 && args[1] == '--all') {
        todoView.getAllList();
        return;
      }

      // 缺省值默认查询已完成的todo
      todoView.getUnDoneList();
      return;
    }

    // 导出
    if (args[0] == 'export') {
      if (args.length >= 2) {
        todoView.export(args[1]);
        return;
      }
    }

    // 导入
    if (args[0] == 'import') {
      if (args.length >= 2) {
        todoView.import(args[1]);
        return;
      }
    }

    // 登录
    if (args[0] == 'login') {
      if (args.length >= 3 && args[1] == '-u') {
        todoView.login(args[2]);
      }
    }

    //登出
    if (args[0] == 'logout') {
      todoView.logout();
    }

    // 配置文件地址
    if (args[0] == 'config') {
      todoView.configPath();
    }
  }
}

String _sp(List<String> args) {
  StringBuffer stringBuffer = StringBuffer();
  stringBuffer.writeAll(args, ' ');
  return stringBuffer.toString();
}
